package org.summer.lawyer.domain.bo.paychannel;

import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.summer.common.mybatis.core.domain.BaseEntitySearch;
import org.summer.lawyer.domain.PayChannel;

import java.io.Serial;

/**
 * 支付通道业务对象 pay_channel
 *
 * @author summer
 * @date 2024-06-22
 */
@Schema(title ="支付通道视图对象 pay_channel", description = "支付通道视图对象 pay_channel")
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = PayChannel.class, reverseConvertGenerate = false)
public class PayChannelBo extends BaseEntitySearch {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @Schema(title = "id", type = "Long", description = "主键ID")
    //@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 通道编码
     */
    @Schema(title = "channelCode", type = "String", description = "通道编码")
    //@NotBlank(message = "通道编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String channelCode;

    /**
     * 应用ID
     */
    @Schema(title = "appId", type = "Long", description = "应用ID")
    //@NotNull(message = "应用ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long appId;

    /**
     * 状态(0停用，1启用）
     */
    @Schema(title = "status", type = "String", description = "状态(0停用，1启用）")
    //@NotBlank(message = "状态(0停用，1启用）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String status;

    /**
     * 费率，百分比
     */
    @Schema(title = "feeRate", type = "Integer", description = "费率，百分比")
    //@NotNull(message = "费率，百分比不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer feeRate;

    /**
     * 单次支付限额
     */
    @Schema(title = "payLimit", type = "Long", description = "单次支付限额")
    //@NotNull(message = "单次支付限额不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long payLimit;

    /**
     * 商户号
     */
    @Schema(title = "mchNo", type = "String", description = "商户号")
    //@NotBlank(message = "商户号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String mchNo;

    /**
     * 商户名称
     */
    @Schema(title = "mchName", type = "String", description = "商户名称")
    //@NotBlank(message = "商户名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String mchName;

    /**
     * 应用key
     */
    @Schema(title = "wxAppId", type = "String", description = "应用key")
    //@NotBlank(message = "应用key不能为空", groups = { AddGroup.class, EditGroup.class })
    private String wxAppId;

    /**
     * 商户密钥
     */
    @Schema(title = "mchKey", type = "String", description = "商户密钥")
    //@NotBlank(message = "商户密钥不能为空", groups = { AddGroup.class, EditGroup.class })
    private String mchKey;

    /**
     * api版本(v2,v3)
     */
    @Schema(title = "apiVersion", type = "String", description = "api版本(v2,v3)")
    //@NotBlank(message = "api版本(v2,v3)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String apiVersion;

    /**
     * APIv2密钥
     */
    @Schema(title = "apiKeyTwo", type = "String", description = "APIv2密钥")
    //@NotBlank(message = "APIv2密钥不能为空", groups = { AddGroup.class, EditGroup.class })
    private String apiKeyTwo;

    /**
     * APIv3密钥
     */
    @Schema(title = "apiKeyThree", type = "String", description = "APIv3密钥")
    //@NotBlank(message = "APIv3密钥不能为空", groups = { AddGroup.class, EditGroup.class })
    private String apiKeyThree;

    /**
     * p12证书,退款、转账时，必须要配置p12证书才可以执行
     */
    @Schema(title = "keyContent", type = "String", description = "p12证书,退款、转账时，必须要配置p12证书才可以执行")
    //@NotBlank(message = "p12证书,退款、转账时，必须要配置p12证书才可以执行不能为空", groups = { AddGroup.class, EditGroup.class })
    private String keyContent;

    /**
     * p12证书文件位置
     */
    @Schema(title = "keyFile", type = "String", description = "p12证书文件位置")
    //@NotBlank(message = "p12证书文件位置不能为空", groups = { AddGroup.class, EditGroup.class })
    private String keyFile;

    /**
     * apiclient_key.pem 证书文件的对应字符串
     */
    @Schema(title = "privateKeyContent", type = "String", description = "apiclient_key.pem 证书文件的对应字符串")
    //@NotBlank(message = "apiclient_key.pem 证书文件的对应字符串不能为空", groups = { AddGroup.class, EditGroup.class })
    private String privateKeyContent;

    /**
     * apiclient_cert.pem
     */
    @Schema(title = "privateCertContent", type = "String", description = "apiclient_cert.pem")
    //@NotBlank(message = "apiclient_cert.pem不能为空", groups = { AddGroup.class, EditGroup.class })
    private String privateCertContent;

    /**
     * 备注
     */
    @Schema(title = "remark", type = "String", description = "备注")
    //@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;


}
